/**
 *qiankun基础配置
 * Created by wanglong on 2021/06/18.
 */
import { props, initGlState } from "@/share";
import { registerMicroApps, start } from "qiankun";

/**
 * 注册子应用 registerMicroApps(apps,lifeCycles)
 *apps - Array<RegistrableApp> - 必选，微应用的一些注册信息
 * 注册微应用的基础配置信息。当浏览器 url 发生变化时，会自动检查每一个微应用注册的 activeRule 规则，符合规则的应用将会被自动激活。
 */
registerMicroApps(
  [
    {
      name: "common", // 必选，微应用的名称，微应用之间必须确保唯一。
      entry: "//localhost:8081", // 必选，微应用的 entry 地址。
      container: "#root-view", // 子应用挂载的div
      activeRule: "/commonModules", // 微应用的激活规则。
      props,
    },
  ],
  {
    beforeLoad: [
      (loadApp) => {
        console.log("before load", loadApp);
      },
    ],
    beforeMount: [
      (mountApp) => {
        console.log("before mount", mountApp);
      },
    ],
    afterMount: [
      (mountApp) => {
        console.log("before mount", mountApp);
      },
    ],
    afterUnmount: [
      (unloadApp) => {
        console.log("after unload", unloadApp);
      },
    ],
  }
);

// 注册全局状态管理
initGlState();
// 启动
start({
  prefetch: true, // 可选，是否开启预加载，默认为 true。
  // sandbox: true, // 可选，是否开启沙箱，默认为 true。//从而确保微应用的样式不会对全局造成影响。
  // singular: true, // 可选，是否为单实例场景，单实例指的是同一时间只会渲染一个微应用。默认为 true。
  // fetch: () => {}, // 可选，自定义的 fetch 方法。
  // getPublicPath: () => {
  //   console.log("启动失败");
  // },
  // getTemplate: (tpl) => { console.log(tpl); },
  // excludeAssetFilter: (assetUrl) => { console.log(assetUrl); }, // 可选，指定部分特殊的动态加载的微应用资源（css/js) 不被qiankun 劫持处理
});
